%* 2: * 
%line 23 "fwebmac.web"

%% --- THIS IS fwebmac.sty ---

%% This file must be included into all .tex files produced by FWEAVE.  For
%% the source for this file, please see fwebmac.web.

%% ---------------------------------------------------------------------------

%* :2 * %* 3: * 
%line 35 "fwebmac.web"

%% If it's not defined yet, load in the macros.
\ifx\FWEBisloaded\relax\endinput\else\let\FWEBisloaded\relax\fi

%* :3 * %* 4: * 
%line 40 "fwebmac.web"

\def\FWEBversion{1.30}
\def\FWEBdate{June 10, 1993}

%* :4 * %* 5: * 
%line 46 "fwebmac.web"

\def\LaTeX{{\rm L\kern-0.36em\raise0.3ex\hbox{\Csc a}\kern-0.15em T%
	\kern-0.1667em \lower0.7ex\hbox{E}\kern-0.125em X}}

%* :5 * %* 6: * 
%line 54 "fwebmac.web"

\newif\ifLaTeXisloaded

\ifx\pageno\undefined
	\LaTeXisloadedtrue
\fi

%* :6 * %* 7: * 
%line 63 "fwebmac.web"

\ifx\selectfont\undefined\else
	\fontsize{10}{12pt}\rm % The standard font for bulk of document.
\fi

%* :7 * %* 8: * 
%line 71 "fwebmac.web"

\catcode`\@=11

\ifLaTeXisloaded
	\let\pageno\c@page% \WEB\ has its own name for the page number.
	\def\FWEBend{\let\clearpage\newpage% Otherwise, one gets a blank page.
		\end{document}}% \LaTeX\ redefines |\end|.
\else
	\let\FWEBend\end
\fi

\catcode`\@=12

%* :8 * %* 9: * 
%line 85 "fwebmac.web"

\long\def\comment#1\endcomment{}

%* :9 * %* 10: * 
%line 91 "fwebmac.web"

\def\WEB{\Wtypewriter{WEB}}
\def\FWEB{\Wtypewriter{FWEB}}
\def\CWEB{\Wtypewriter{CWEB}}
\def\TANGLE{\Wtypewriter{TANGLE}} \let\Tangle\TANGLE
\def\WEAVE{\Wtypewriter{WEAVE}}   \let\Weave\WEAVE
\def\FTANGLE{\Wtypewriter{FTANGLE}}
\def\FWEAVE{\Wtypewriter{FWEAVE}}

%* :10 * %* 11: * 
%line 102 "fwebmac.web"

\def\C{C}
\def\Cpp{\C{\tt ++}}
\def\FORTRAN{{\Csc Fortran}} \let\Fortran\FORTRAN
\def\MAKE{{\tt MAKE}}       \let\Make\MAKE
\def\RATFOR{{\Csc Ratfor}}   \let\Ratfor\RATFOR
\let\TEX\TeX
\def\UNIX{{\SC UNIX}}	\let\Unix\UNIX

%* :11 * %* 12: * 
%line 112 "fwebmac.web"

\chardef\other=12

%* :12 * %* 13: * 
%line 117 "fwebmac.web"

\let\amp\&
\let\at\@
\let\bslash\\
\let\caret\^
\let\dollar\$
\let\dstar\*
\let\equals\=
\let\leftbrace\{
\let\period\.
\let\rightbrace\}
\let\vertbar|
\let\PM\#
\let\PC\%

%* :13 * %* 15: * 
%line 152 "fwebmac.web"

\newdimen\pardimen
\dimen0=\normalbaselineskip
\parskip=\dimen0 plus 1pt

%% If you don't like spaces between paragraphs, change |\pardimen| to |0pt|.
\pardimen=\parskip

\parskip 0pt% No stretch between paragraphs

%% Indentation for the \TeX\ part is handled in a separate variable
%% |\TeXindent| from the variable |\notch| used for definition and code parts.
\newdimen\TeXindent
\TeXindent 1em% For paragraphs in the \TeX\ part.

%* :15 * %* 16: * 
%line 180 "fwebmac.web"

\ifx\selectfont\undefined
	\let\mainfont\tenrm \let\cmntfont\tenrm
	\font\eightrm=cmr8 \let\SC\eightrm

	\font\titlefont=cmssbx10 scaled \magstep2% Sans serif
	\font\ttitlefont=cmtt10 scaled\magstep2% Typewriter type

	\font\tentex=cmtex10 % \TeX\ \.{extended char.\ set} (used in strings)
	\font\Csc=cmcsc10 % Caps/small caps.
	\font\tenbfit=cmbxti10 % \&{Intrinsic functions}

%% Used for module-number subscript:
	\font\seventi=cmti7
	\font\sevenrm=cmr7
	\font\sevenbf=cmbx7

%% For special handling of array indices:
	\font\sevenit=cmti7
	\scriptfont\itfam=\sevenit

	\scriptscriptfont\itfam=\sevenit

\else % NFSS
	\def\mainfont{\fontfamily{\rmdefault}\fontseries{m}\fontshape{n}%
		\normalsize}
	\let\cmntfont\mainfont

	\def\eightrm{\fontfamily{\rmdefault}\fontseries{m}\fontshape{n}%
		\footnotesize}
	\let\SC\eightrm

	\def\titlefont{\fontfamily{\sfdefault}\fontseries{\bfdefault}%
		\fontshape{n}\Large}
	\def\ttitlefont{\fontfamily{\ttdefault}\fontseries{m}\fontshape{n}%
		\Large}

	\def\tentex{\fontfamily{\ttdefault}\fontseries{m}\fontshape{n}%
		\normalsize}

	\def\Csc{\fontfamily{\rmdefault}\fontseries{m}\fontshape{\scdefault}%
		\normalsize}
	\def\tenbfit{\fontfamily{\rmdefault}\fontseries{\bfdefault}%
		\fontshape{\itdefault}\normalsize}

	\def\seventi{\fontfamily{\rmdefault}\fontseries{m}%
		\fontshape{\itdefault}\scriptsize}
	\def\sevenrm{\fontfamily{\rmdefault}\fontseries{m}\fontshape{n}%
		\scriptsize}
	\def\sevenbf{\fontfamily{\rmdefault}\fontseries{\bfdefault}%
		\fontshape{n}\scriptsize}

	\def\fiveti{\fontfamily{\rmdefault}\fontseries{m}%
		\fontshape{\itdefault}\tiny}
	\def\fiverm{\fontfamily{\rmdefault}\fontseries{m}\fontshape{n}\tiny}
	\def\fivebf{\fontfamily{\rmdefault}\fontseries{\bfdefault}%
		\fontshape{n}\tiny}

	\def\tensy{\fontfamily{cmsy}\fontseries{m}\fontshape{n}\normalsize}

	\def\pbf{\fontfamily{\rmdefault}\fontseries{\bfdefault}\fontshape{n}%
		\selectfont}
	\def\ptt{\fontfamily{\ttdefault}\fontseries{m}\fontshape{n}\selectfont}
\fi

%% The next isn't really sufficient; this ought to be put into
%% the definitions of |\tenpoint|, |\twelvepoint|, etc.
	\let\bfit\tenbfit


%* :16 * %* 17: * 
%line 255 "fwebmac.web"

\def\Wshort#1{\leavevmode\hbox{$#1$}}% One-letter identifiers such
	% as~\Wshort{x} look better this way.

\def\Wid#1{\leavevmode\hbox{\it#1\/\kern.05em}}% Italic type for ordinary
	% identifiers such as \Wid{test}.

%% By default, macros are formatted the same way as ordinary identifiers.
%% However, you can change the following definitions to get special effects.
%% Either make your own version of |fwebmac.sty| (use a change file with
%% |fwebmac.web|), or redefine |\WidD| and/or |\WidM| with an \.{@l} command.
\let\WidD\Wid % Outer macro
\let\WidM\Wid % WEB macro

\def\Wreserved#1{\leavevmode\hbox{\def\\{\tt\BS}\bf#1\/}}% Boldface type
	% for reserved words such as \&{integer}.

\def\Wintrinsic#1{\leavevmode\hbox{\def\\{\tt\BS}\bfit#1\/\kern.05em}}%
	% Library/intrinsic function name such as \@{sin}.

%% In the following, we use |\gdef| instead of |\global\let| because we
%% might want to change the definition of, e.g., |\WidM| with an \.{@l}
%% command, which comes \It{after} the |\Wbegin| statement.
\def\Wequate#1#2#3#4#5#6#7#8{%
	\gdef#1{\Wreserved}% |\&| by default.
	\gdef#2{\Wshort}% |\|| by default.
%% Don't reorder the following three statements! In case arguments 3--5 are
%% identical, we want the ordinary identifier to win.
	\gdef#5{\WidM}% |\\| by default.
	\gdef#4{\WidD}% |\\| by default.
	\gdef#3{\Wid}% |\\| by default.
	\gdef#6{\Wintrinsic}% |\@| by default.
	\gdef#7{\Wkeyword}% |\.| by default.
	\gdef#8{\Wtypewriter}}% |\.| by default.

%* :17 * %* 18: * 
%line 308 "fwebmac.web"

\def\Wzero{0}

\def\WIN#1#2{\ifmmode\def\ZZ{}\else\def\ZZ{\null$\null}\fi
	\ZZ_{\def\next{#2}\ifx\next\Wzero{\bullet}\else\WINo{#1}{#2}\fi}\ZZ}


%% Format the module-number subscript.
\def\WINo#1#2{%
	\ifcase#1\underline{\hbox{\sevenrm#2}}% Generic name (\.{@[}). [0]
		\or\hbox{\sevenrm#2}% Function name. [1]
		\or\underline{\hbox{\seventi#2}}% WEB macro. [2]
		\or\hbox{\seventi#2}% Outer macro. [3]
		\or\underline{\hbox{\sevenbf#2}}% \.{@`}. [4]
		\or\hbox{\sevenbf#2}% \&{typedef}. [5]
		\else{#2}% Error trap.
	\fi}

%* :18 * %* 19: * 
%line 332 "fwebmac.web"

\def\Wtypewriter#1{\relax\ifmmode\gdef\YY{\null$\null}\else\gdef\YY{}\fi
	\YY{\leavevmode\INITSTR#1}\YY}

\let\Wkeyword\Wtypewriter

%* :19 * %* 20: * 
%line 341 "fwebmac.web"

\def\INITSTR{%
	\tentex % Typewriter type for strings
	\let\\=\BS % Backslash in a string: '\.\\'.
	\let\'=\RQ % Right quote in a string: '\.\''.
	\let\`=\LQ % Left quote in a string: '\.\`'.
	\let\{=\LB % Left brace in a string: '\.\LB'.
	\let\}=\RB % Right brace in a string: '\.\RB'.
	\let\~=\TL % Tilde in a string: '\.\~'.
	\let\ =\SP % Space in a string: '\.\ '.
	\let\_=\UL % Underline in a string: '\.\_'.
	\let\&=\AM % Ampersand in a string: '\.\&'.
	\def\0{\discretionary{\BS}{}{}}% FWEB inserts this automatically every
	  % so often so very long strings will break. Broken strings will
	  % be marked by a backslash.
	\def\1{,\0}% FWEB replaces commas in strings by this, so strings
		% tend to break after commas.
	\let\2\space % Ordinary space after control sequences in \TeX.
	\def\3{\space\space}% Translation of a tab in \TeX.
	}

%* :20 * %* 21: * 
%line 363 "fwebmac.web"

\def\#{\hbox{\tt\char35}}% Parameter sign: '\#'.
\def\${\hbox{\tt\char36}}% Dollar sign: '\$'.
\def\%{\hbox{\tt\char37}}% Percent sign: '\%'.
\def\^{\ifmmode\raise0.45ex\hbox{$\,\scriptstyle\mathchar"25E\,$}%
	\else\char`^ \fi}% Pointer or
	% hat: '\^'.
	% Circumflex accents can be obtained from |\^^D| instead of |\^|.
\def\AT!{@}% At sign for control text: '\AT!'

%* :21 * %* 22: * 
%line 376 "fwebmac.web"

\chardef\asterisk=`\*
\def\ast{\ifmmode{\displaystyle\mathchar"2203}\else\asterisk\fi}

%* :22 * %* 23: * 
%line 381 "fwebmac.web"

\chardef\AM=`\&% Ampersand character in a string: '\.\&'.
\chardef\BS=`\\% Backslash in a string: '\.\\'.
\def\ttBS{{\tt\BS}}% Literal backslash: '\ttBS'.
\chardef\LB=`\{% Left brace in a string: '\.\LB'.
\def\LQ{{\tt\char'22}}% Left quote in a string: '\.\`'.
\chardef\RB=`\}% Right brace in a string: '\.\RB'.
\def\RQ{{\tt\char'23}}% Right quote in a string: '\.\''.
\def\SP{{\tt\char`\ }}% (Visible) space in a string: '\.\ '.
\chardef\TL=`\~% Tilde in a string: '\.\~'.
\chardef\UL=`\_% Underline character in a string: '\.\_'.


%* :23 * %* 24: * 
%line 395 "fwebmac.web"

\def\LA{\hbox{\LQ}}% Left quote outside a string

%* :24 * %* 25: * 
%line 404 "fwebmac.web"

\newbox\rulebox
\newcount\ruleno

\def\rules#1{\leavevmode
	\ruleno=0
	\rlap{\vtop to 0pt{\null
		\def\R{\setbox0=\hbox{\the\ruleno}%
			\rlap{\vrule height0pt depth#1}%
			\kern-0.5\wd0\copy0\kern-0.5\wd0
			\advance\ruleno by1
			\hskip1em}
		\rlap{\R\R\R\R\R\R\R}
		\vss}}}

%* :25 * %* 26: * 
%line 421 "fwebmac.web"

\newdimen\notch
\notch 1em

%* :26 * %* 27: * 
%line 463 "fwebmac.web"

\newcount\globalindent
\globalindent=3 % Global indentation in notches.

%* :27 * %* 28: * 
%line 469 "fwebmac.web"

\newcount\ind % Current indentation in notches.
\newcount\lastind % Used for preprocessor commands.
\def\saveind{\global\lastind=\ind}

%* :28 * %* 29: * 
%line 477 "fwebmac.web"

\newbox\bak  \setbox\bak=\hbox to -\notch{}% Backspace one notch.
\newbox\bakk \setbox\bakk=\hbox to -2\notch{}% Backspace two notches.

%* :29 * %* 30: * 
%line 483 "fwebmac.web"

\def\1{\global\advance\ind by1\hangindent\ind\notch}% Indent one more notch

%* :30 * %* 31: * 
%line 488 "fwebmac.web"

\def\2{\global\advance\ind by-1{}}% Indent one less notch

%* :31 * %* 32: * 
%line 493 "fwebmac.web"

\def\3#1{\hfil\penalty#10\hfilneg}% Optional break within a statement.

%* :32 * %* 33: * 
%line 497 "fwebmac.web"

\def\4{\copy\bak}% Backspace one notch

%* :33 * %* 34: * 
%line 501 "fwebmac.web"

\def\5{\hfil\penalty-1\hfilneg \kern2.5\notch\copy\bakk
	\yskipfalse\ignorespaces}

%* :34 * %* 35: * 
%line 506 "fwebmac.web"

\def\6{\ifmmode\else\par
	\hangindent\ind\notch \noindent \kern\ind\notch \copy\bakk \ignorespaces\fi}

%* :35 * %* 36: * 
%line 511 "fwebmac.web"

\def\7{\WY\6}% Forced break and a little extra space.

%* :36 * %* 37: * 
%line 515 "fwebmac.web"

\def\8{\hskip-\ind\notch \hskip 2\notch}

%* :37 * %* 38: * 
%line 519 "fwebmac.web"

\newif\ifyskip
\def\yskip{\medskip}

%* :38 * %* 39: * 
%line 527 "fwebmac.web"

\def\Hspace{\hbox{ }}

%* :39 * %* 40: * 
%line 534 "fwebmac.web"

\def\WPR#1{\copy\bakk \saveind%	|\global\advance\ind by 2|
	\1\Wreserved{@#1}\Hspace}

\def\WPs{\global\ind=\lastind}

%* :40 * %* 41: * 
%line 542 "fwebmac.web"

\def\defin#1#2{\4\saveind
	\1\Wreserved{#1}\hbox{$^{\rm#2}$}\Hspace}% Begin @d, @m, or @f.

%* :41 * %* 42: * 
%line 548 "fwebmac.web"

\def\note#1#2.{\WY\noindent{\hangindent2em\baselineskip10pt\eightrm#1 #2.\par}}

\def\lapstar{\rlap{*}}

%% If there's a current include file, it's printed at the start of each 
%section.
\def\includefile{}
\def\WIF#1{\def\includefile{#1}}
\def\startsection{\WQ\noindent{\let\*=\lapstar\bf\modstar.%
\ifx\includefile\empty\else\ [{\tt\includefile}]\fi\quad}}

%* :42 * %* 44: * 
%line 568 "fwebmac.web"

\def\skipbrace#1{\catcode`\{=1 }

\def\WC{\Wcmnt{\ast}{\finishcomment}}
\def\Wc{\Wcmnt{/}{\XX}}
\def\Wcmnt#1#2{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi% C-style cmnt
	\XX\hfil\penalty-1\hfilneg
	\ifyskip\else\quad\fi$/#1\,$%
	\bgroup\cmntfont % The user can redefine the comment font |\cmntfont|.
		\aftergroup#2%
		\catcode`\{=\other\skipbrace}

\def\finishcomment{$\,\ast/$\XX}

\def\Wx#1{\kern-0.5\notch\hbox{\tt\%}}

%* :44 * %* 45: * 
%line 586 "fwebmac.web"

\def\WCDIR#1{\WPR!\Wtypewriter{#1}\WPs}

%* :45 * %* 46: * 
%line 591 "fwebmac.web"

\def\WCD#1{\ifmmode\hbox\fi{\ignorespaces#1}}

%* :46 * %* 47: * 
%line 595 "fwebmac.web"

\def\WD:#1:{\defin{@D}{#1}}% Outer macro definition: `\.{@D}'
\def\Wd:#1:{\defin{@d}{#1}}% Outer macro definition: `\.{@d}'
\def\WUd:#1:{\defin{@u}{#1}}% Undef outer macro: `\.{@u}'.
\def\WMD{\defin{@M}{}}% WEB macro definition: `\.{@M}'.
\def\WMd{\defin{@m}{}}% WEB macro definition: `\.{@m}'.
\def\WE:#1:{\WPR{\##1}}% WEB preprocessor command: `\.{@\#if\dots}'.

\def\WF:#1:{\defin{@f}{#1}}% Format definition: `\.{@f}'.

\def\Wl:#1:{\defin{@l}{#1}}% Limbo text definition: `\.{@l}'.
\def\Wv:#1:{\defin{@v}{#1}}% Operator overloading: `\.{@v}'.
\def\WWW:#1:{\defin{@W}{#1}}% Identifier overloading:  `\.{@W}'.
\def\Ww:#1:{\defin{@w}{#1}}% Identifier overloading:  `\.{@w}'.

%* :47 * %* 48: * 
%line 612 "fwebmac.web"

\def\Wunnamed#1#2{}

%* :48 * %* 49: * 
%line 616 "fwebmac.web"

\outer\def\WM#1.{\MN#1.\Wmark\ifon\Wskip\startsection\ignorespaces}

%* :49 * %* 50: * 
%line 632 "fwebmac.web"

\newcount\Wss % Counter for the dots.

\newif\ifdotsafter % Do subsection dots come after or before the section name?
\dotsafterfalse

\ifdotsafter % ``@* NAME...''
	\def\Wbefore:#1.{\Wdefname#1.\Wdot}%
	\def\Wafter{\WNss}%
\else % ``@*.. NAME.'' or ``@*2 NAME.''
	\def\Wbefore: #1{\def\next{\Wafter#1}% Case for neither dot nor number.
		\ifx#1.\def\next{\Wdot.}% Count arbitrary dots.
		\else\ifx#11\Wsectionnum1%
		\else\ifx#12\Wsectionnum2%
		\else\ifx#13\Wsectionnum3%
		\else\ifx#14\Wsectionnum4% Highest numerical level allowed.
		\fi\fi\fi\fi\fi
		\next}%
	\def\Wafter#1.{\Wdefname#1.\WNss}% Executed after figuring out level.
\fi

\def\Wsectionnum#1{\Wss#1\let\next\Wafter}% Assign numerical section number.
\def\Wdefname#1.{\def\Wname{#1}}% Remember name of section.

\outer\def\WN#1.{\MN#1.\Wss=0\Wbefore:}% Begin a starred section.

%* :50 * %* 51: * 
%line 659 "fwebmac.web"

\def\Wdot{\futurelet\next\WNs}
\def\WNs{\ifx\next.\advance\Wss by 1\let\next\Wnext\else\let\next\Wafter\fi
	\next}
\def\Wnext#1{\Wdot}

%* :51 * %* 52: * 
%line 679 "fwebmac.web"

%% Page break for major sections.
\def\Wsectionbreak{\ifcase\Wss\vfil\eject\fi}

%% Running headline.
\def\rhead{\ifcase\Wss
		\uppercase{\ignorespaces\Wname}%
	\else
		\ignorespaces\Wname%
	\fi}% Define running headline.

\let\WZ\let % Now you can |\send| the control sequence |\WZ|
\let\WIM\let % This macro is made temporarily unexpandable; see |\WZ|.

\def\WNss{%
	\Wmark % Can't put this in |\MN| since |\rhead| must be defined first.
	\Wsectionbreak % Typeset the break between sections.
	\message{*\modno}% Progress report to the terminal.
	\ifon
		\ifcase\Wss\else\Wskip\fi
		\startsection{\bf\ignorespaces\Wname.\quad}%
		{\def\WIN{\WIM}%
		\edef\next{\write\cont{\WZ{\the\Wss}{\Wname}%
		{\modno}{\noexpand\the\pageno}}}\next}%
			% To contents file |CONTENTS.tex|.
		\ignorespaces}

%* :52 * %* 53: * 
%line 711 "fwebmac.web"

\def\WmarkN{\def\Wmark{{\def\WIN{\WIM}
		\mark{\modno\noexpand\else\rhead}}}}

\ifx\selectfont\undefined
	\WmarkN
\else
	\def\Wmark{{\def\WIN{\WIM}\let\protect\noexpand
		\mark{\modno\noexpand\else\rhead}}}
\fi

\def\Wmodno{\iftrue\topmark\fi}% Extracts the left-hand part of the mark.

\def\Whead{{\let\WIM\WIN
	\expandafter\iffalse\topmark\fi}}% Extracts the right-hand part.

%* :53 * %* 54: * 
%line 728 "fwebmac.web"

\catcode`\@=11

\def\MN#1.{\par
	\parskip=\pardimen % Reset to \TeX\ spacing
	\parindent=\TeXindent
	{\xdef\modstar{#1}\let\*=\empty\xdef\modno{#1}}
	\ifLaTeXisloaded
		\xdef\@currentlabel{\modno}%
	\fi
	\ifx\modno\modstar \onmaybe \else\ontrue \fi}

\catcode`\@=12

%* :54 * %* 55: * 
%line 748 "fwebmac.web"

\def\WDP#1{\ifx E#1\else{\tt#1}\fi}% Used in the exponent macro below.

\def\WO#1{%
	{% Make the next definitions local.
	\let\-\_%
	\let\d\$%
	\def\\{\let\_\-\let\$\d}%
	\def\?{\kern.2em}%
	\def\###1{\kern0.1em{\tt \ifcase##1F\or L\or U\or UL\else?\fi}}%C~constant.
	\def\^##1{\cdot 10^{\aftergroup}\aftergroup\WDP\aftergroup##1}% Power of ten
	\def\_{_{\\\rm\aftergroup}}% Fortran-90 kind parameter.
	\def\%{{\rm H}\hbox{\aftergroup}\Wtypewriter{\aftergroup}}% Hollerith constant
	\def\&{0{\tt b}}% Binary constant.
	\def\~{\hbox{\rm\char'23\kern-.2em\it\aftergroup\?\aftergroup}}% Octal
	\def\`{\hbox{\rm\char"7D\tt\aftergroup}}#1}}% Double quotes for hex constant


%* :55 * %* 56: * 
%line 771 "fwebmac.web"

\def\WPr{\global\ind=\globalindent \1}

%* :56 * %* 57: * 
%line 776 "fwebmac.web"

\def\WP{\parskip=0pt \parindent=\notch
	\rightskip=0pt plus 100pt minus 10pt
	\sfcode`;=3000
	\pretolerance 10000
%* :57 * %* 57: * 
%line 786 "fwebmac.web"
	\WPr
	\leavevmode\kern\notch}

%* :57 * %* 58: * 
%line 790 "fwebmac.web"

\def\WQ{\rightskip=0pt
	\sfcode`;=1500 \pretolerance 200 \hyphenpenalty 50 \exhyphenpenalty 50 }

%* :58 * %* 59: * 
%line 795 "fwebmac.web"

\def\WA{\note{See also}}% Cross-reference for multiply defined section names.

\def\Wauto[#1]{\Wtypewriter{[#1]}\ }

\def\WB{\mathopen{\Wtypewriter{@/\ast}}}% Begin controlled comment.

\let\WG\ge % Greater than or equal sign: '$\WG$'.

\let\WI\neq % Unequal sign: '$\WI$'.  (Better reserve |\ne| for the
		% electron density~$n_e$.)

\def\WJ{\Wtypewriter{@\&}}% TANGLE's join operation: '\WJ'.

\let\WK\gets % Left arrow: '$\WK$'.

\let\WL\le % Less than or equal sign: '$\WL$'.

\def\Wskip{\vfil\penalty-100\vfilneg \vskip12ptminus3pt}% See |\WM|, etc.

\def\Wskipped#1{\8\mathhexbox278.\quad\Wtypewriter{@I "#1"}\ \ {\it Section(s)
skipped}\dots\WP}

\let\WPtr\Rightarrow % Fortran's stupid pointer assignment statement:
		% '$\WPtr$'.

\let\WR=\lnot % Logical not: '$\WR$'.

\let\WS=\equiv % Equivalence sign: '$\WS$'.

\def\WT{\mathclose{\Wtypewriter{@\ast/}}}% Terminate controlled comment.

\def\WU{\note{This code is used in}}% Cross-reference for uses of sections.

\let\WV\lor % Logical or: '$\WV$'.

\let\WW=\land % Logical and: '$\WW$'.

%* :59 * %* 60: * 
%line 835 "fwebmac.web"

\def\WX#1:#2\X#3\X{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi
	\XX$\langle\,$#2{\eightrm\kern.5em#1}$\,\rangle^{\rm #3}$\XX}

%* :60 * %* 61: * 
%line 840 "fwebmac.web"

\def\WY{\par\parskip=0pt\yskip}

%* :61 * %* 63: * 
%line 852 "fwebmac.web"

\def\?{\mathrel?}

%* :63 * %* 64: * 
%line 856 "fwebmac.web"

\def\Colon{\ifmmode\colon\else:\fi}

\def\CC{\mathord{::}}% '$x\CC y$'.
\def\CF{{}\mathbin{::}{}}% '$x\CF y$'.


%* :64 * %* 65: * 
%line 866 "fwebmac.web"

\def\=#1{\kern2pt\hbox{\vrule\vtop{\vbox{\hrule
	\hbox{\strut\kern2pt\Wtypewriter{#1}\kern2pt}}
	\hrule}\vrule}\kern2pt}

\let\Wequals\=

%* :65 * %* 66: * 
%line 874 "fwebmac.web"

\let\~=\ignorespaces
\let\*=*

%* :66 * %* 67: * 
%line 880 "fwebmac.web"

\def\PQ{\mathrel{+\mathord\equiv}}% '$\PQ$'.

%* :67 * %* 68: * 
%line 884 "fwebmac.web"

\mathchardef\TLD="0218% '$\TLD$'.

\def\PP{\mathord{++}}% '$\PP$'.
\def\MM{\mathord{--}}% '$\MM$'.

\def\MG{\mathord{\to}}% '$\MG$'.

%* :68 * %* 69: * 
%line 894 "fwebmac.web"

\def\LP{(}% Must be |\def|, not |\let|.
\def\ISL#1#2]{\def\next{#1}}
\def\EE#1{\ISL#1]\ifx\next\LP\EXP[#1]\else\EXP[(#1)]\fi}
\def\EXP[(#1)]{^{#1}}

%* :69 * %* 69: * 
%line 903 "fwebmac.web"

%* :69 * %* 70: * 
%line 905 "fwebmac.web"

\let\SlSl\parallel% Concatenation: '$\SlSl$'.

%* :70 * %* 71: * 
%line 909 "fwebmac.web"

\def\LS{\mathopen{({/}}}
\def\SR{\mathclose{{/})}}

%* :71 * %* 72: * 
%line 914 "fwebmac.web"

\def\NN{\hbox{\#\#}}% '\NN'.
\def\NP{\hbox{\#!}}% '\NP'.
\def\NC{\hbox{\#:}}% '\NC'.
\def\ND{\hbox{\#.}}% '\ND'.
\def\Nq{\hbox{\#\tt'}}% '\Nq'.
\def\NQ{\hbox{\#\tt"}}% '\NQ'.

%* :72 * %* 73: * 
%line 923 "fwebmac.web"

\def\FALSE{{\cal F}}% '$\FALSE$'.
\def\TRUE{{\cal T}}% '$\TRUE$'.

%* :73 * %* 74: * 
%line 928 "fwebmac.web"

\def\Wcp{\mathrel{+{=}}} \let\PE\Wcp % `$x\PE y$'.
\def\Wcm{\mathrel{-{=}}} \let\ME\Wcm % `$x\ME y$'.
\def\Wcs{\mathrel{\ast{=}}} \let\TE\Wcs % `$x\Wcs y$'.
\def\Wcv{\mathrel{/{=}}} \let\FE\Wcv % `$x\FE y$'.
\def\Wcd{\mathrel{\%{=}}} \let\CE\Wcd % `$x\Wcd y$'.
\def\Wcx{\mathrel{\^\!{=}}}% `$x\Wcx y$'.
\def\Wca{\mathrel{\amp{=}}}% `$x\Wca y$'.
\def\Wco{\mathrel{\OR{=}}}% `$x\Wco y$'.
\def\Wcg{\mathrel{\GG\!{=}}}% `$x\Wcg y$'.
\def\Wcl{\mathrel{\LL\!{=}}}% `$x\Wcl y$'.

\def\EQV{\mathrel{?{=}}}% `$x\EQV y$'.
\def\NEQV{\not\equiv}% `$x\NEQV y$'.

%* :74 * %* 75: * 
%line 944 "fwebmac.web"

\def\MOD{\mathrel{\%}}% `$x\MOD y$'.
\def\OR{{\,|\,}}% `$x\OR y$'.
\def\AND{{\,\amp\,}}% `$x\AND y$.

\def\GG{\mathrel{>\!>}}% `$x\GG y$'.
\def\LL{\mathrel{<\!<}}% `$x\LL y$'.

\def\HE{\mathrel{\uparrow=}}% `$x\HE y$'.

%* :75 * %* 76: * 
%line 955 "fwebmac.web"

\let\openbraces=\{
\let\closebraces=\}
\def\{{\ifmmode\openbraces\else$\openbraces$\fi}
\def\}{\ifmmode\closebraces\else$\closebraces$\fi}

%* :76 * %* 77: * 
%line 962 "fwebmac.web"

%% Print the meta-comment symbols.
%%\def\WBM{\6\8\Wreserved{@(}}
%%\def\WEM{\6\8\Wreserved{@)}}

%% Don't print the meta-comment symbols.
\def\WBM{}
\def\WEM{}

%* :77 * %* 78: * 
%line 977 "fwebmac.web"

\def\Wblock#1{\Wc\bgroup\ Block #1\egroup}% `\Wblock{99}'

%* :78 * %* 79: * 
%line 987 "fwebmac.web"

\newif\ifop
\newbox\dotbox

\def\Wunknown#1{\={??#1??}}% For unknown dot constant.

{\catcode`\_=11

\gdef\newop#1#2#3{%
	\edef\next{\def\expandafter\noexpand\csname _#1_#2\endcsname}%
	\next{#3}}

\gdef\newbinop#1#2#3{%
	\edef\next{\def\expandafter\noexpand\csname _#1_#2\endcsname}%
	\next{\mathrel{#3}}}

\gdef\newunop#1#2#3{%
	\edef\next{\def\expandafter\noexpand\csname _#1_#2\endcsname}%
	\next{\mathbin{#3}}}

\gdef\Wop#1#2{\setbox\dotbox\hbox{\tt .#1.}%
	\edef\nxt{\expandafter\noexpand\csname _#1_#2\endcsname}%
	\edef\ifnxt{\noexpand\ifx\expandafter\noexpand\csname _#1_#2\endcsname}%
	\ifnxt\empty
		\def\next{\box\dotbox}% Macro not defined; just use \.{.NAME.}.
	\else
		\def\next{\futurelet\nextchar\Woq}% Be careful about |\EE|.
	\fi
	\next}%
}

\global\let\Wb\Wop
\global\let\Wu\Wop

\let\Lbrace{

\def\Woq{\ifx\nextchar\Lbrace
		\let\next\nxt % There's an argument coming up.
	\else
		\ifop
			\def\next{\nxt{}\equiv\box\dotbox}%
		\else
			\let\next\nxt
		\fi
	\fi
	\opfalse
	\next}

%* :79 * %* 80: * 
%line 1036 "fwebmac.web"

\newtoks\WARRAYarga
\newtoks\WARRAYargb

\def\WXA#1{\begingroup
%% We don't want the identifiers to be in hboxes, because we want to get
%% |\scriptstyle| for subscripts.  (We should always be in math mode here.)
	\def\Wshort##1{##1}%
	\def\Wid##1{{\it ##1\/\kern.05em}}%
	\global\WARRAYarga{#1}%
	\futurelet\Wnext\WARRAYm}

\def\WARRAYm{\ifx\Wnext\WXA
		\global\let\Wnext\WARRAYn% Multiple indices in C:  a[i][j][k]
	\else
		\global\let\Wnext\relax
		\WARRAY{\the\WARRAYarga}% Typeset the accumulated indices.
	\fi
	\endgroup
	\Wnext}

\def\WARRAYn#1#2{\WARRAYargb{#2}%
	\edef\Wnext{\noexpand\WXA{\the\WARRAYarga,\the\WARRAYargb}}%Concatenate
	\Wnext}

%% Change the following definition to get indices printed in interesting ways.
\def\WARRAY#1{[#1]}% Default definition.
\def\WSUB#1{_{\scriptstyle#1}}% E.g., subscript indices.

%* :80 * %* 81: * 
%line 1066 "fwebmac.web"

\def\Wouto#1#2{\Wreserved{@#1}\Hspace\Wtypewriter{#2}}
\def\Wout#1{\Wouto{o}{#1}}
\def\WOut#1{\Wouto{O}{#1}}

%* :81 * %* 82: * 
%line 1078 "fwebmac.web"

\newif\ifon
\def\onmaybe{\let\ifon=\maybe} \let\maybe=\iftrue

%* :82 * %* 83: * 
%line 1083 "fwebmac.web"

\newif\iftitle \newif\ifpagesaved

\newcount\contentspageno

%* :83 * %* 84: * 
%line 1089 "fwebmac.web"

\def\lheader{\mainfont\the\pageno\eightrm\qquad\Whead\hfill\Wtitle\qquad
	\ifnum\pageno=\contentspageno\else
		\tensy x\mainfont\Wmodno
	\fi}

%* :84 * %* 85: * 
%line 1096 "fwebmac.web"

\def\rheader{\ifnum\pageno=\contentspageno\else
		\tensy x\mainfont\Wmodno
	\fi
	\eightrm\qquad\Wtitle\hfill\Whead
	\qquad\mainfont\the\pageno}

%* :85 * %* 86: * 
%line 1104 "fwebmac.web"

\def\pagewidtho{6.5}% The width of each page
\def\pageheighto{8.7}% The height of each page
\def\fullpageheighto{9}% Page height including headlines

\newdimen\pagewidth \pagewidth\pagewidtho in
\newdimen\pageheight \pageheight\pageheighto in
\newdimen\fullpageheight \fullpageheight\fullpageheighto in

\newdimen\pageshift \pageshift=0in% Shift righthand pages wrt lefthand ones

\def\magnify#1{\mag=#1
	\pagewidth\pagewidtho truein
	\pageheight\pageheighto truein
	\fullpageheight\fullpageheighto truein
	\setpage}

\def\setpage{\hsize\pagewidth \vsize\pageheight}% Use after changing page size.

%* :86 * %* 87: * 
%line 1124 "fwebmac.web"

\def\page{\box255 }

\newif\ifidenticalpageheads

\def\normaloutput#1#2#3{
	\ifodd\pageno\hoffset=\pageshift\fi
	\shipout\vbox
		{
		\vbox to\fullpageheight
			{
			\iftitle\global\titlefalse
			\else \hbox to\pagewidth
				{\vbox to10pt{}%
				\ifidenticalpageheads#2\else
				\ifodd\pageno
					#3% Pg nos alternate left \& right.
				\else#2\fi
				\fi
				}%	
			\fi
			\vfill#1% Parameter |#1| is the page itself.
			}
		}
	\global\advance\pageno by1}

\def\Wname{{\tt FWEB} OUTPUT}% This section name is reset by starred sections.

%% An OPTIONAL TITLE can be defined by the user in his limbo section.
\def\Wtitle{}

%* :87 * %* 88: * 
%line 1161 "fwebmac.web"

\newtoks\Woutput
\Woutput\output% Remember FWEB's definition.

%* :88 * %* 89: * 
%line 1166 "fwebmac.web"

\newcount\minutes
\newcount\hours

\hours=\time
\divide\hours by 60
\multiply\hours by 60
\minutes=\time
\advance\minutes by -\hours
\divide\hours by 60

\def\Time{\the\hours:\ifnum\minutes<10 0\fi\the\minutes}

\def\Date{\ifcase\month\or
	January\or February\or March\or April\or May\or June\or
	July\or August\or September\or October\or November\or December\fi
	\space\number\day, \number\year}

%* :89 * %* 90: * 
%line 1187 "fwebmac.web"

\def\topofcontents{\centerline{\titlefont\Wtitle}
  \vfill} % This is the default.

%* :90 * %* 91: * 
%line 1192 "fwebmac.web"

%* :91 * %* 91: * 
%line 1196 "fwebmac.web"

\def\botofcontents{\vfill
%* :91 * %* 91: * 
%line 1201 "fwebmac.web"
	\rightline{\Date}
	\rightline{\Time}}

\contentspageno=0% Default page number for table of contents

%* :91 * %* 92: * 
%line 1209 "fwebmac.web"

\newwrite\cont % For the table of contents.

\def\Wbegin[#1]#2#3#4#5#6#7{\edef\contentsfile{#5}%
	\def\readcontents{\input\contentsfile}%
	\Wequate#6
	\ifLaTeXisloaded
		\documentstyle[#1]{#2}%
		\textwidth\pagewidth
		\textheight\pageheight
		\TeXindent#3
		\begin{document}
		\pageno=2
	\else
		\TeXindent#3
	\fi
	\notch#4
	\output
		{\setbox0=\page% The first page is garbage
		\immediate\openout\cont=\contentsfile
		\global\output{\normaloutput\page\lheader\rheader}%
		}%
%% Here we print out a garbage page, so that the first |\topmark| won't be 
%null.
	\setpage
	\vbox to \vsize{}
	}

%* :92 * %* 93: * 
%line 1237 "fwebmac.web"

\def\Wch{\note{The following sections were changed by the change file:}
	\let\*=\relax}

%* :93 * %* 94: * 
%line 1245 "fwebmac.web"

\newbox\Sbox % Saved box preceding the index
\newbox\Lbox % Lefthand column in the index

%% The following macro is the style file entry \.{index.preamble}.
\def\Winx{\par\vskip6pt plus 1fil
	\write\cont{}% Ensure that the contents file isn't empty
	\closeout\cont % The contents information has been fully gathered
	\output{\ifpagesaved\normaloutput{\box\Sbox}\lheader\rheader\fi
		\global\setbox\Sbox=\page \global\pagesavedtrue}
	\pagesavedfalse \eject % Eject the page-so-far and predecessors
	\setbox\Sbox\vbox{\unvbox\Sbox}% Take it out of its box
	\vsize=\pageheight \advance\vsize by -\ht\Sbox % The remaining height
	\hsize=.5\pagewidth \advance\hsize by -10pt
		% Column width for the index (20pt between cols)
	\parfillskip 0pt plus .6\hsize % Try to avoid almost empty lines
	\def\lr{L}% This tells whether the left or right column is next
	\output{\if L\lr\global\setbox\Lbox=\page \gdef\lr{R}
		\else\normaloutput{\vbox to\pageheight{\box\Sbox\vss
		\hbox to\pagewidth{\box\Lbox\hfil\page}}}\lheader\rheader
		\global\vsize\pageheight\gdef\lr{L}\global\pagesavedfalse\fi}
%%  \message{Index:}
	\parskip 0pt plus .5pt
	\outer\def\:##1, {\par\hangindent2em\noindent##1:\kern1em}% Index entry
	\def\[##1]{$\underline{##1}$}% Underlined index item
	\def\(##1){$^{\rm ##1}$}% Language marker
	\let\Windexspace\medskip % Spacing between letter groups in index.
	\rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar
	\hyphenpenalty 10000 \parindent0pt}

%* :94 * %* 95: * 
%line 1276 "fwebmac.web"

\def\Wfin{\par\vfill\eject
	\ifpagesaved\null\vfill\eject\fi % Output a null index column
	\if L\lr\else\null\vfill\eject\fi % Finish the current page
	\parfillskip 0pt plus 1fil
	\def\rhead{NAMES OF THE SECTIONS}
	\output{\normaloutput\page\lheader\rheader}
	\setpage
	\def\note##1##2.{\quad{\eightrm##1 ##2.}}
	\def\WU{\note{Used in}}% Cross-reference for uses of sections
	\def\:{\par\hangindent 2em}\let\*=*}

%* :95 * %* 96: * 
%line 1290 "fwebmac.web"

\let\Wmods\relax

%* :96 * %* 97: * 
%line 1296 "fwebmac.web"

\def\Winfo#1#2#3#4{\bigskip
	\:{{\bf COMMAND LINE:}\ \ \Wtypewriter{#1}.}\smallskip
	\:{{\bf WEB FILE:}\ \ \Wtypewriter{#2}.}\smallskip
	\:{{\bf CHANGE FILE:}\ \ \Wtypewriter{#3}.}\medskip
	\:{{\bf GLOBAL LANGUAGE:}\ \ \Wtypewriter{\rm #4}.}\medskip}

%* :97 * %* 98: * 
%line 1304 "fwebmac.web"

\def\Wcon{\par\vfill\eject
	\rightskip 0pt \hyphenpenalty 50 \tolerance 200
	\setpage
	\output{\normaloutput\page\lheader\rheader}
	\titletrue % Prepare to output the table of contents
	\pageno=\contentspageno \def\rhead{TABLE OF CONTENTS}
	\topofcontents
	\catcode`\@=11
	\hbox to\hsize{\hfil Section\hbox to3em{\hss Page}}
	\def\WZ##1##2##3##4{\hbox to\hsize{\kern##1em\ignorespaces##2
		\leaders\hbox to .5em{.\hfil}\hfil\ ##3\hbox to3em{\hss##4}}}
	\let\WIM\WIN % Restore the proper definition.
	\readcontents\relax % Read the contents info.
	\botofcontents
	\FWEBend}

%* :98 * %* 99: * 
%line 1325 "fwebmac.web"

%% Label a section with an identifying name.
\def\modlabel#1{%
	\ifLaTeXisloaded
		\label{MOD#1}%
	\else
		\edef\next{\gdef\expandafter\noexpand\csname MOD#1\endcsname{\modno}}%
		\next
	\fi}

%% Print the number of a labelled section.
\def\Wmodule#1{\ifLaTeXisloaded
		\ref{MOD#1}%
	\else
		\csname MOD#1\endcsname
	\fi}

%% Examples of references to sections.
\def\WEBsection#1{section~\Wmodule{#1}}% |\section| is used by \LaTeX.
\def\WEBmodule#1{module~\Wmodule{#1}}
\let\module\WEBmodule% For backward compatibility.

%* :99 * %* 100: * 
%line 1352 "fwebmac.web"

\def\strutdepth{\dp\strutbox}

\def\marginal#1{\strut\vadjust{\kern-\strutdepth\specialmargin{#1}}}

\def\specialmargin#1{\vtop to\strutdepth{
	\baselineskip\strutdepth
	\vss\llap{#1 }\null}}

\def\LANGUAGE#1{\marginal{\smash{\vtop{\hbox{%
	\hbox{\tt@L\lowercase{#1}:\enspace}}\null}}}\ignorespaces}

%% Use the next one if you don't want language changes to be printed.
%* :100 * %* 100: * 
%line 1368 "fwebmac.web"

%* :100 * %* 101: * 
%line 1370 "fwebmac.web"

\newskip\ttglue

\ttglue=0.5em plus 0.25em minus 0.15em

\def\ttother{\catcode`\\=\other \catcode`\{=\other \catcode`\}=\other
	\catcode`\$=\other \catcode`\&=\other \catcode`\#=\other
	\catcode`\%=\other \catcode`\~=\other \catcode`\_=\other
	\catcode`\^=\other}

\def\ttverbatim{\begingroup \ttother \obeyspaces \obeylines \tt}

{\obeyspaces\gdef {\ }}

\def\begintt{$$\let\par=\endgraf
	\ttverbatim
	\parskip=0pt
%%	\catcode`\@=0
	\rightskip=-\parindent
	\ttfinish}

\def\Begintt{\bgroup
	\let\par=\endgraf
	\ttverbatim
	\parskip=0pt
	\rightskip=-\parindent
	\ttFinish}

{\catcode`\|=0
	|catcode`|\=\other
	|obeylines%
	|gdef|ttfinish#1^^M#2\endtt{#1|vbox{#2}|endgroup$$}%
	|gdef|ttFinish#1\Endtt{#1|endgroup|egroup}}

\let\verticalbar|

\def\activebar{\catcode`\|=\active}

{\activebar
\gdef\normalbar{\activebar
	\let|\verticalbar}}

%%\activebar

{\obeylines%
\gdef\ttbar{\activebar%
	{\obeylines\gdef|{\ttverbatim%
		\spaceskip=\ttglue%
		\let^^M=\ \let|=\endgroup}}}}

\let\WCX\Begintt

%* :101 * 
